var util = require('../utils/util.js');
var api = require('../config/api.js');
const app = getApp();
/**
 * 新购物车更
 * @param {} data
 * @param data.id // 商品id
 * @param data.update // 更新数量--正数：加；负数：减；0：清空
 * @param data.list // 要更新数组
 * @param data.changeProperty //要更改的属性名
 * @return Object 返回值是更新处理后的数据的id, 索引，更新数，数据项
 */
async function _cartUpdate(data) {
    try{
        wx.showLoading();
        const res = await util.request(
            api.cartUrl.cartUpdate,
            {
                commodityId: data.id,
                quantity: data.update,
            },
            "POST"
        );
        if (res.success == true) {
            // 
            const goodList = data.list;
            // 获取当前更新的索引
            const itemIndex = goodList.findIndex(
                (item) => item.commodityId === data.id
            );
            // 获取当前更新的数据项
            const item = goodList[itemIndex];
            const num = item[data.changeProperty] + data.update;
            goodList[itemIndex][data.changeProperty] = num;
            app.globalData.cartNum = res.result;
            if(!app.globalData.isCartPage){
                wx.setTabBarBadge({
                  index: 3,
                  text: app.globalData.cartNum.toString()
                })
            }
            wx.hideLoading();
            // 返回值
            return Promise.resolve({
                id: data.id,
                index: itemIndex,
                num: num,
                item: goodList[itemIndex]
            });
        }
    }catch(e){
        wx.showToast({
            title: e.message,
            icon: "none",
        });
        return Promise.reject(e.message);
    }
}

module.exports = {
    _cartUpdate
}